import {defineStore} from 'pinia'
import request from '@/uitils/request'
import {ApiRes} from '@/types/data'
import {Profile} from '@/types/user'
import {setProfile,getProfile,removeProfile} from '@/uitils/storage'
const useUserStore=defineStore('user',{
    state(){
        return{
            profile:getProfile() as Profile
        }
    },
    actions:{
        // 账号登录
       async getUserInfo(account:String,password:String){
        const res=await request.post<ApiRes<Profile>>('/login',{account,password})
        // console.log(res);
         this.profile=res.data.result
        //  将用户信息存储
         setProfile(res.data.result)
       },
    // 手机验证登录
    async loginMobile(mobile:String,code:string){
      const res=   await request.post<ApiRes<Profile>>('/login/code',{mobile,code})
        this.profile=res.data.result
        setProfile(res.data.result)
    },
    // QQ登录
   async qqLogin(openId:string){
     const res=await   request.post('/login/social',{
            unionId:openId,
            source:6
        })
        this.profile=res.data.result
        setProfile(res.data.result)
    },
    // 绑定qq的短信验证码
    async sendQQBindMsg(mobile: string) {
    await request.get('/login/social/code', {
      params: {
        mobile
      }
    })
  },
//   QQ绑定
  async qqBindLogin(openId: string, mobile: string, code: string) {
    const res = await request.post<ApiRes<Profile>>('/login/social/bind', {
      mobile,
      code,
      unionId: openId
    })
    // 1. 保存用户信息到 state 中
    this.profile = res.data.result
    setProfile(res.data.result)
  },
    //    获取手机验证码
   async sendMobileMsg(mobile:string){
    await request.get('/login/code',{params:{mobile}})
    },
    // 获取短信验证码
    // 绑定qq的短信验证码
    async sendQQPathMsg(mobile: string) {
        await request.get('/register/code', {
        params: {
            mobile
        }
        })
    },
    async qqPatchLogin(data: any) {
        const res = await request.post<ApiRes<Profile>>(
          `/login/social/${data.openId}/complement`,
          data
        )
        // 1. 保存用户信息到 state 中
        this.profile = res.data.result
        setProfile(res.data.result)
      },

    // 退出
    logout(){
        this.profile={} as Profile
        removeProfile()
    }


},
    getters:{}
})
export default useUserStore